#!/bin/sh

# move the log file to backup dir

# 20161228 First release  by wuyang

# shell name: backupfiles.sh 


PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

. ~/.bashrc

export LANG=C

sourcepath=/home/sftp/               # 因为用rsync 所以需要注意最后有反斜杠

destination=/home/sftp-backup/       # 同上

DATE=`date -d "yesterday" +%Y-%m`  # 每月生成一个备份目录

do_Date=`date -d "yesterday" +%Y-%m-%d-%s`

before_date=10   #备份10天以前的文件


# 打印执行日志
echo "-----------------------$do_Date-----------------------------------"

# 生成备份日期的目录
destion_path=$destination$DATE
mkdir -p $destion_path

# 在别分目录下生成和源目录，相同的目录
rsync -av --include=*/  --exclude=*  $sourcepath  $destion_path

:<<BLOCK
# 不能遍历下面所有的目录,所以注释掉
dirlist=`cd $sourcepath && ls -l|grep ^d|awk '{print $NF}'`

for dir in $dirlist
    do
    echo $dir
    mkdir -p $destion_path/$dir
    done
BLOCK

# 查询出指定时间前的所有文件，并mv到备份目录中
# 参考：http://blog.csdn.net/augusdi/article/details/41010041 
# ${file/dir/path}：將第一個 dir 提換為 path：/path1/dir2/dir3/my.file.txt

files_path=$(find $sourcepath  -type f -mtime +${before_date})  # 查询需要备份的文件

for sfile in $files_path
    do 
    dfile=${sfile/$sourcepath/$destion_path/}       # 替换目录，获取备份目录
    mv -vf --backup=existing $sfile $dfile    # 重复文件做备份处理，并强制覆盖，操作打印到控制台

    done

exit 0;
